﻿// 전역 변수를 정의한다.
g_strIPAddress = "127.0.0.1"; 		// 서버의 IP 주소를 저장한다.
g_nPort = 8001; 							// 채팅 서비스의 포트 번호를 가리킨다.
g_strNickName = "eioie"; 				// 사용자의 이름을 저장한다.
g_nNetworkPlayer = 0;
g_bNetworkMode = false;
g_bSelfClick = true;
g_bConnectBoth = false;
g_bConnectCheck1 = false;
g_bConnectCheck2 = false;

i_login._visible = true;
i_user._visible = false;

// 채팅 버튼 리스너 등록.
var keyListener:Object = new Object();
keyListener.onKeyDown = function() 
{
  switch (Key.getCode()) 
  {
  case Key.LEFT :
    break;
  case Key.UP :
    break;
  case Key.RIGHT :
    break;
  case Key.DOWN :
    break;
  case Key.ENTER :
	i_chat.btn_chat.onRelease();
    break;
  }
};
Key.addListener(keyListener);

// XML 소켓 객체를 하나 생성한다.
g_server = new XMLSocket; 
// 서버 접속 시도시 접속 성공 여부를 알려줄 이벤트 함수를 만들어 지정한다
g_server.onConnect = function (success)
{
	if (success) // 접속에 성공했으면 메인 화면 관련 객체만 보이게 한다.
	{
		trace("XMLSocket Connect success!!");
		FuncReplay();
		g_bNetworkMode = true;
		i_login._visible = false;
		i_user._visible = true;
	}
}

g_server.onClose = function()
{
	trace("onClose");
}

i_login.btn_connect.onRelease = function()
{
	if( i_login.input_ip.text != "" ) g_strIPAddress = i_login.input_ip.text;
	if( i_login.input_port.text != "" ) g_nPort = i_login.input_port.text;
	if( i_login.input_name.text != "" ) g_strNickName = i_login.input_name.text;	
	g_server.connect(g_strIPAddress, g_nPort);
}

i_user.btn_close.onRelease = function()
{
	g_server.close();
	g_bNetworkMode = false;
	trace("XMLSocket Connect close!!");
	i_login._visible = true;
	i_user._visible = false;
}

i_chat.btn_chat.onRelease = function()
{
	g_server.send("<chat name = " + "\"" + g_strNickName + "\""+ ">" + i_chat.input_chat.text + "</chat>");
	i_chat.input_chat.text = "";
}

// 서버가 보내는 데이터를 받는데 사용될 함수를 만들어 onXML 이벤트에 지정한다.
g_server.onXML = function(data) // 인자 data는 서버가 보낸 XML 데이터에 해당한다
{
	trace(">원본데이터 :" + data);

	var e = data.firstChild;
	var strContent = e.childNodes[0].nodeValue;
	
	trace(">NodeName : " + e.nodeName);
	trace(">Content : " + strContent + "\r");
	
	if(e != null)
	{
		if(e.nodeName == "player") 
		{
			g_nNetworkPlayer = strContent;
				i_user.output_user.text = "PLAYER "+g_nNetworkPlayer + " (으)로\r접속되었습니다.\r";
			if( g_nNetworkPlayer == 1 ) 
				i_user.output_user.text += "PLAYER 2 가 접속하기를 기다리고 있습니다.\r";
			if( g_nNetworkPlayer == 2 ) 
			{
				g_bConnectBoth = true;
				g_server.send("<name player = " + "\"" + g_nNetworkPlayer + "\""+ ">"+g_strNickName+"</name>");
			}
		}
		if(e.nodeName == "wait") 
		{
			if( strContent == 2 )
			{
				g_bConnectBoth = true;
				i_user.output_user.text = "PLAYER "+g_nNetworkPlayer + " (으)로\r접속되었습니다.\r";
				g_server.send("<name player = " + "\"" + g_nNetworkPlayer + "\""+ ">"+g_strNickName+"</name>");
			}
		}
		if(e.nodeName == "name") 
		{
			i_user.output_user.text += "PLAYER " + e.attributes.player + " : " + strContent + "\r";
		}
		if(e.nodeName == "chat") 
		{
			i_chat.output_chat.text += e.attributes.name + ">" + strContent + "\r";
			i_chat.output_chat.scroll = i_chat.output_chat.bottomScroll;
		}
		if(e.nodeName == "game") 
		{
			if(e.attributes.player == g_nPlayer)
			{
				g_bSelfClick = false;
				eval("Baduk_"+e.attributes.x+"_"+e.attributes.y).onRelease();
			}
		}
		if(e.nodeName == "replay")
		{
			if(strContent == 1) g_bConnectCheck1 = true;
			if(strContent == 2) g_bConnectCheck2 = true;
			if(g_bConnectCheck1 && g_bConnectCheck2) 
			{
				g_bConnectCheck1 = false;
				g_bConnectCheck2 = false;
				g_bConnectBoth = true;
			}
		}

	}
}